package org.jsola.hr.entity;

import lombok.Data;
import lombok.EqualsAndHashCode;
import org.jsola.core.entity.BaseDeleteDO;
import org.jsola.core.entity.Key;

import java.util.Date;
import javax.persistence.Table;

/**
 * 考勤打卡记录
 *
 * @author zhr
 */
@EqualsAndHashCode(callSuper = true)
@Data
@Table(name = "hr_attend_punch_record")
@Key(UUID = true)
public class AttendPunchRecordDO extends BaseDeleteDO<String> {

    private static final long serialVersionUID = 1L;

    /**
     * 公司ID
     */
    private String companyId;
    /**
     * 公司名称
     */
    private String companyName;
    /**
     * 部门ID
     */
    private String deptId;
    /**
     * 部门名称
     */
    private String deptName;
    /**
     * 员工ID
     */
    private String empInfoId;
    /**
     * 员工姓名
     */
    private String empInfoName;
    /**
     * 考勤方案
     */
    private String attendPlanId;
    /**
     * 考勤方案名称
     */
    private String attendPlanName;
    /**
     * 年度
     */
    private String year;
    /**
     * 月
     */
    private String month;
    /**
     * 日
     */
    private String day;
    /**
     * 打卡类型（1：上班打卡，2：下班打卡，3：上班缺卡:4：下班缺卡）
     */
    private Integer punchType;
    /**
     * 打卡范围（1：范围外打卡，地点异常，2：范围外打卡，正常外勤，3：范围内打卡）
     */
    private Integer punchRange;
    /**
     * 是否在打卡范围内;1-是,0-否
     */
    private Integer rangeState;
    /**
     * 标准打卡时间
     */
    private Date standardTime;
    /**
     * 打卡时间
     */
    private Date punchTime;
    /**
     * 打卡状态（0：无效打卡，1：正常，2：迟到，3：早退）
     */
    private Integer punchStatus;
    /**
     * 迟到/早退分钟数
     */
    private Integer minute;
    /**
     * 工作时长
     */
    private Integer workTime;
    /**
     * 判定描述
     */
    private String decisionDesc;
    /**
     * 打卡坐标
     */
    private String coordinate;
    /**
     * 打卡地点
     */
    private String location;
    /**
     * 打卡wifi
     */
    private String punchWifi;
    /**
     * 打卡来源 （1：APP打卡，2：考勤机打卡，3：EXCEL导入）
     */
    private Integer punchSource;
    /**
     * 是否校准（0：否，1：是）
     */
    private Boolean isCalibration;
    /**
     * 是否补卡（0：否，1：是）
     */
    private Boolean isMakeUp;
    /**
     * 标准时间(历史)
     */
    private String hisStandardTime;
    /**
     * 打卡时间(历史)
     */
    private Date hisPunchTime;
    /**
     * 打卡状态(历史)
     */
    private Integer hisPunchStatus;
    /**
     * 打卡序号
     */
    private String punchSerial;



}

